home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / unixlib.lha / unix / include / internal / files.h < prev    next >
C/C++ Source or Header  |  1996-10-15  |  1KB  |  39 lines

  1. #ifndef FILES_H
  2. #define FILES_H
  3.  
  4. struct fileinfo {
  5.   int flags;
  6.   int count;
  7.   void *userinfo;
  8.   unsigned long (*select_start)(void *userinfo, int rd, int wr, int ex);
  9.   int (*select_poll)(void *userinfo, int *rd, int *wr, int *ex);
  10.   int (*read)(void *userinfo, void *buffer, unsigned int length);
  11.   int (*write)(void *userinfo, void *buffer, unsigned int length);
  12.   int (*lseek)(void *userinfo, long rpos, int mode);
  13.   int (*close)(void *userinfo, int internal);
  14.   int (*ioctl)(void *userinfo, int request, void *data);
  15. };
  16.  
  17. /* FI_READ & WRITE replace O_RDONLY, WRONLY & RDWR. Other flags are left untouched */
  18. #define FI_READ 1
  19. #define FI_WRITE 2
  20.  
  21. int _get_free_fd(int *nfd, struct fileinfo ***fpt);
  22.  
  23. int _alloc_fd(void *userinfo, int flags,
  24.   unsigned long (*select_start)(void *userinfo, int rd, int wr, int ex),
  25.   int (*select_poll)(void *userinfo, int *rd, int *wr, int *ex),
  26.   int (*read)(void *userinfo, void *buffer, unsigned int length),
  27.   int (*write)(void *userinfo, void *buffer, unsigned int length),
  28.   int (*lseek)(void *userinfo, long rpos, int mode),
  29.   int (*close)(void *userinfo, int internal),
  30.   int (*ioctl)(void *userinfo, int request, void *data)
  31. );
  32.  
  33. void _free_fd(int fd);
  34.  
  35. struct fileinfo *_find_fd(int fd);
  36. int _last_fd(void);
  37.  
  38. #endif
  39.